package cn.com.bluemoon.daps.model.mapper;

import cn.com.bluemoon.daps.model.dto.FieldStandardDto;
import cn.com.bluemoon.daps.model.dto.ModelTableInfoDto;
import cn.com.bluemoon.daps.model.entity.DapDataModelTableField;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * <p>
 * 数据模型-模型中设计表-字段的表 Mapper 接口
 * </p>
 *
 * @author admin
 * @since 2020-08-03
 */
@Repository
public interface DapDataModelTableFieldMapper extends BaseMapper<DapDataModelTableField> {

    ModelTableInfoDto selectTableInfo(@Param("modelTableId") String modelTableId,
                                      @Param("bmStatus") Integer bmStatus);

   /* *//**
     * 查询是否关联标准的字段详情
     * @param modelId
     * @param isRelation
     * @param bmStatus
     * @return
     *//*
    List<DapDataModelTableField> selectIsRelation(@Param("modelId") String modelId,
                                                  @Param("isRelation") String isRelation,
                                                  @Param("bmStatus") Integer bmStatus);*/

    /**
     * 查询字段详细信息
     * @param modelTableId
     * @param bmStatus
     * @return
     */
    List<FieldStandardDto> selectFieldInfo(@Param("modelTableId") String modelTableId,
                                           @Param("bmStatus") Integer bmStatus);


   /* *//**
     * 获得到即将发布的新增字段
     * @param nowTableId
     * @param oldTableId
     *//*
    List<DapDataModelTableField> selectInsertField(@Param("nowTableId") String nowTableId,
                                                   @Param("oldTableId") String oldTableId);


    *//**
     * 获得到即将发布的删除字段
     * @param nowTableId
     * @param oldTableId
     *//*
    List<DapDataModelTableField> selectDeleteField(@Param("nowTableId") String nowTableId,
                                                   @Param("oldTableId") String oldTableId);
*/

    /**
     * 删除备份的字段
     * @param modelId
     */
    @Delete("delete from dap_data_model_table_field where data_model_id = #{modelId} and p_id != '0'")
    void deleteField(@Param("modelId") String modelId);

    /**
     * 获取字段列表+表名
     *
     * @param modelId 模型id
     * @param newest 最新
     * @return x
     */
    List<DapDataModelTableField> findByModelIdAndNewest(@Param("modelId") String modelId,@Param("newest") boolean newest);

    /**
     * 获取字段列表+表名（分页）
     *
     *
     * @param page 分页标记
     * @param modelId 模型id
     * @param newest 最新
     * @return x
     */
    IPage<DapDataModelTableField> findAllByPageByModelIdAndNewest(Page<DapDataModelTableField> page, @Param("modelId") String modelId, @Param("newest") boolean newest);

    List<DapDataModelTableField> findAllByModelIdAndNewestLimit(@Param("modelId") String modelId,
                                                                @Param("newest") boolean newest,
                                                                @Param("offset") int offset,
                                                                @Param("limit") int limit);
}
